1. Field of the Invention
This invention relates to the field of executing non-native program instructions, such as, for example, Java instructions, across multiple execution environments.
2. Description of the Prior Art
It is known to provide data processing systems with security systems which seek to provide a secure domain (mode(s)) of operation and a non-secure domain (mode(s)) of operation. The system may be switched between these domains of operation using tightly controlled mechanisms. Data and resources which are available in a secure mode may not be available in the non-secure mode. An example of such data processing systems are described in WO-A-2004-046738.
Whilst such systems provide a foundation for secure operation of those portions of the processing activity where security is required, it is nevertheless important that the code which executes when in a secure mode is carefully written and well understood so as not to introduce security vulnerabilities. One known technique for enhancing the security of the code executing in the secure mode is to use non-native program instructions in the secure mode executing in a virtual machine environment, such as Java instructions executing on a Java virtual machine within the secure mode. The additional isolation provided by the virtual machine provides a further layer of security for the code executing in the secure mode. A significant problem with this approach is that execution environments of the secure mode and the non-secure mode can be significantly different requiring two distinct development processes for their respective code and this introduces disadvantageous expense and complexity.
It is also known within the field of Java programming to use techniques such as Java Remote Method Invocation (RMI) which allows a distributed application to be split over multiple virtual machines. Such RMI techniques require that the user explicitly code the remote interface location and decide how to split the application at the programming stage. Furthermore, additional RMI “server-side” code has to be installed ahead of such a call being made and this introduces a disadvantageous degree of expense and complexity in the development of such code.